<?
/*
	Класс для тестирования производительности. Позволяет ставить контрольные точки и замерять время между ними.

	Создан: 2011-02-10
	Автор: djerom
	Версия: 0.0.0.3
*/
	class c_benchmark_util
	{
		var $points = array();

		// Добавить именованную точку в спиcок. В отметку добавляется информация о времени и используемой памяти.
		function add($name, $userdata = array())
		{
			//list($s, $us) = explode(' ', microtime()); // Получаем отметку времени.
			
			// Формируем запись.
			//$point = array('name' => $name, 'time' => (float)$us + (float)$s, 'timedelta' => 0, 'timetotal' => 0,
			//	'memory' => 0, 'memdelta' => 0, 'memtotal' => 0, 'mark' => '#fff');

			$point = array('name' => $name, 'time' => microtime(true), 'timedelta' => 0, 'timetotal' => 0,
				'memory' => 0, 'memdelta' => 0, 'memtotal' => 0, 'mark' => '#fff');
				
			// Добавляем данные по памяти.
			$point['memory'] = memory_get_usage();
				
			$point = array_merge($point, $userdata); // Добавляем пользовательские параметры.
			
			// Расчитываем разницу времени и памяти.
			if (count($this->points) > 0)
			{
				$first = $this->points[0];
				$last = $this->points[count($this->points) - 1];
				
				$point['timedelta'] = $point['time'] - $last['time'];
				$point['timetotal'] = $point['time'] - $first['time'];
				
				$point['memdelta'] = $point['memory'] - $last['memory'];
				$point['memtotal'] = $point['memory'] - $first['memory'];
			}
			$this->points[] = $point;
		}
	}
?>